package com.bert.generator.base.db;

import cn.hutool.core.util.StrUtil;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 数据库中表的信息
 */
@Data
@NoArgsConstructor
public class TableInfo {

    /**
     * 所属数据库名称
     */
    private String ownerDbName;

    /**
     * 表的名称
     */
    private String tableName;

    /**
     * 表前缀匹配到的模块名称--对应的maven工程名称，如portal 、 order
     */
    private String moduleName;

    /**
     * 对应的包名，如果不存在，则赋默认值：business
     * 配置了后基础类会创建在module.business下面
     */
    private String packageName;

    /**
     * 表的前缀
     */
    private String prefix;

    /**
     * 表的备注
     */
    private String comment;

    /**
     * 该表中的所有列信息
     */
    private List<ColumnInfo> columnInfoList;

    /**
     * 将表名删除前缀，生成类的基本名称
     * 如：前缀是uc_ 表名是uc_organization 生成Organization
     *
     * @return tableName
     */
    public String baseClassName() {
        return StrUtil.upperFirst(StrUtil.toCamelCase(this.tableName.replaceFirst(prefix, "")));
    }


}
